﻿Public Class AnimationKristall
    Inherits ObjektAnimation
    ''' <summary>
    ''' Fuehrt eine Explosion aus und zerstoert die Einheit
    ''' </summary>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal X As Integer, ByVal Y As Integer, ByVal Musikspielen As Boolean, ByVal Schlacht As Integer)
        MyBase.New(Musikspielen, Schlacht)
        P.X = X
        P.Y = Y
        Frames = 6
        BildID = LoadTextur("KristallAnimation", Frames)
        If DataSettings.MusikSound Then
            MusikEngine.LoadWav(DataSettings.Resourcenpfad + "Sound\Sound Effects\Overworld\KristallAnimation.wav", False)
        End If
    End Sub
    Public Overrides Function Malen(ByVal intColor As Color, Optional ByVal Zoomfaktor As Single = 1, Optional ByVal Feldbreite As Integer = -1) As Boolean
        If DataSettings.draw3D Then

        ElseIf DataSettings._2D_3D_Malen Then
            MyBase.Malen(intColor, Zoomfaktor)
        Else
            'Welchen Teil des Bildes wir malen wollen
            Dim sngRotation As Double = 0
            Dim T As Textur = Texturen(BildID)
            If FM = True Then
                With Grafikengine.recBild
                    .X = T.EinzelbildGroesse.Width * Frame : .Width = T.EinzelbildGroesse.Width
                    .Y = 0 : .Height = T.EinzelbildGroesse.Height
                End With
            Else
                With Grafikengine.recBild
                    .X = 0 : .Width = T.EinzelbildGroesse.Width
                    .Y = 0 : .Height = T.EinzelbildGroesse.Height
                End With
            End If
            With Grafikengine.ptfRotCenter
                .X = T.EinzelbildGroesse.Width / 2 * Zoomfaktor
                .Y = T.EinzelbildGroesse.Height / 2 * Zoomfaktor
            End With
            If InFeldern = True Then
                Grafikengine.ptfPosition = New Drawing.Point(Hauptmenue.Feldbreite * P.X + Objektverwalter.Spielfeld.BildschirmKooX, Hauptmenue.Feldbreite * P.Y + Objektverwalter.Spielfeld.BildschirmKooY - Hauptmenue.Feldbreite)
            Else
                Grafikengine.ptfPosition = New Drawing.Point(P.X + Objektverwalter.Spielfeld.BildschirmKooX, P.Y + Objektverwalter.Spielfeld.BildschirmKooY)
            End If
            'Ausschnitte in den Backbuffer zeichnen
            'Wo wird das Bild gezeichnet
            '16 ist die Breite eines Feldes 8 die Haelfte das heisst wir ermitteln den Mittelpunkt des Feldes und ziehen die Haelfte der Groesse der Einheit ab
            '... und wie breit ist es
            With Grafikengine.szfScale
                .Height = T.EinzelbildGroesse.Height * Zoomfaktor
                .Width = T.EinzelbildGroesse.Width * Zoomfaktor
            End With
            'jetzt wird es in den Backbuffer gezeichnet
            Grafikengine.Sprite.Draw2D(T.TexturBild, Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
        End If

        If Frame >= Frames Then
            Return False
        End If

        Frame += 1
        If Frame >= Frames Then
            Frame = Frames
        End If
        Return True
    End Function
End Class
